package com.telsoft.hms.data;

import java.util.ArrayList;
import java.util.List;

import com.telsoft.hms.entity.ETT_NEWS;
import com.telsoft.hms.lib.admin.client.data.ClientDataPreprocessor;

/**
 * @author MINHTQ 
 * Ngày tạo : 07/10/2014
 */
public class GetNews_DATA extends ClientDataPreprocessor {
	/**Hàm lấy danh sách tin tức theo ngôn ngữ và row để phân trang
	 * @author MinhTQ
	 * @param iLanguageCode mã ngôn ngữ lấy theo session
	 * @param strSecurityKey mã bảo vệ để kết nối đến CSDL
	 * @param iStartRow điều kiện để phân trang
	 * @param iEndRow điều kiện để phân trang
	 * @return List<ETT_NEWS> List danh sách tin tức
	 * @throws Exception 
	 * Ngày tạo : 07/10/2014
	 */
	public List<ETT_NEWS> getAllNews(int iLanguageCode, String strSecurityKey,
			int iStartRow, int iEndRow) throws Exception {
		List<ETT_NEWS> returnValue = new ArrayList<>();
		try {
			String strSQL = "SELECT nv.NEWS_ID,nv.CREATED_DATE,nr.STATUS,nv.CREATED_ID,nv.MODIFIED_ID,nv.MODIFIED_DATE,nv.TITLE,nv.CONTENT,nv.LANGUAGE_CODE"
					+ " FROM NEWS_VALUES nv JOIN NEWS_REF nr ON nv.NEWS_ID = nr.NEWS_ID WHERE"
					+ " ((rownum <= ? AND rownum >= ?) OR ? = 0) AND nv.LANGUAGE_CODE= ? ORDER BY CREATED_DATE desc";
			open(strSecurityKey);
			mStmt = mConnection.prepareStatement(strSQL);
			mStmt.setInt(1, iEndRow);
			mStmt.setInt(2, iStartRow);
			mStmt.setInt(3, iEndRow);
			mStmt.setInt(4, iLanguageCode);
			mRs = mStmt.executeQuery();
			if (mRs.next()) {
				ETT_NEWS ett = new ETT_NEWS();
				ett.setNewsId(mRs.getInt("NEWS_ID"));
				ett.setCreateDate(mRs.getDate("CREATED_DATE"));
				ett.setStatus(mRs.getInt("STATUS"));
				ett.setCreateId(mRs.getInt("CREATED_ID"));
				ett.setModifiedId(mRs.getInt("MODIFIED_ID"));
				ett.setModifiedDate(mRs.getDate("MODIFIED_DATE"));
				ett.setTitle(mRs.getString("TITLE"));
				ett.setContent(mRs.getString("CONTENT"));
				ett.setLanguageCode(mRs.getInt("LANGUAGE_CODE"));
				returnValue.add(ett);
			}
		} catch (Exception ex) {
			throw ex;
		} finally {
			close(mRs);
			close(mStmt);
			close(mConnection);
		}
		return returnValue;
	}
	
	/** Lấy ra danh sách ngôn ngữ khác của tin tức tương ứng
	 * @author MinhTQ
	 * @param strSecurityKey mã bảo vệ để kết nối đến CSDL
	 * @param iNewsId mã tin tức
	 * @param iLanguageCode mã ngôn ngữ lấy theo session
	 * @return List<ETT_NEWS> List danh sách tin tức
	 * @throws Exception 
	 * Ngày tạo : 08/10/2014
	 */
	
	public List<ETT_NEWS> getListNewsLanguage(String strSecurityKey,
			int iNewsId, int iLanguageCode) throws Exception {
		List<ETT_NEWS> listNew = new ArrayList<ETT_NEWS>();
		String sql = "SELECT nv.NEWS_ID,nv.CREATED_DATE,nv.CREATED_ID,nv.MODIFIED_ID,nv.MODIFIED_DATE,nv.TITLE,nv.CONTENT,nv.LANGUAGE_CODE, lg.DISPLAY_VALUE AS \"LANGUAGE_DISPLAY\", lg.SHORT_DISPLAY AS \"LANGUAGE_SHORT_DISPLAY\" "
				+ "FROM NEWS_VALUES nv JOIN LANGUAGE_CODE_VALUES lg ON nv.LANGUAGE_CODE = lg.INPUT_LANGUAGE "
				+ "WHERE nv.NEWS_ID = ?"
				+ " AND nv.LANGUAGE_CODE != ?";
		try {
			open(strSecurityKey);
			mStmt = mConnection.prepareStatement(sql);
			mStmt.setInt(1, iNewsId);
			mStmt.setInt(2, iLanguageCode);
			mRs = mStmt.executeQuery();
			while (mRs.next()) {
				ETT_NEWS ett = new ETT_NEWS();
				ett.setNewsId(mRs.getInt("NEWS_ID"));
				ett.setCreateDate(mRs.getDate("CREATED_DATE"));
				ett.setCreateId(mRs.getInt("CREATED_ID"));
				ett.setModifiedId(mRs.getInt("MODIFIED_ID"));
				ett.setModifiedDate(mRs.getDate("MODIFIED_DATE"));
				ett.setTitle(mRs.getString("TITLE"));
				ett.setContent(mRs.getString("CONTENT"));
				ett.setLanguageCode(mRs.getInt("LANGUAGE_CODE"));
				ett.setLanguageDisplayValue("LANGUAGE_DISPLAY");
				ett.setLanguageShortDisplay("LANGUAGE_SHORT_DISPLAY");
				listNew.add(ett);
			}
		} catch (Exception e) {
			throw e;
		} finally {
			close(mConnection, mStmt, mRs);
		}
		return listNew;
	}
}
